﻿using COMPONENT.Entity;
using COMPONENT.Library.Conexion;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace COMPONENT.Dao
{
    public class clsUsuarioDAO
    {
        private clsUsuarioDAO()
        {

        }
        private static clsUsuarioDAO instancia = null;

        public static clsUsuarioDAO Instancia
        {
            get
            {
                if (instancia == null)
                {
                    instancia = new clsUsuarioDAO();
                }
                return instancia;
            }
        }

        public clsUsuario ValidarUsuario(string email, string password)
        {
            clsUsuario objUsuario = null;
            SqlDataReader dr = null;
            SqlCommand cmd = null;
            try
            {
                cmd = new SqlCommand("SP_VERIFICAR_USUARIO", clsConexion.GetConexion());
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@EMAIL", email);
                cmd.Parameters.AddWithValue("@PASSWORD", password);
                dr = cmd.ExecuteReader();
                if (dr.Read())
                {
                    objUsuario = new clsUsuario();
                    objUsuario.ID = Convert.ToInt32(dr["idUsuario"]);
                    objUsuario.TipoUsuario.ID = Convert.ToInt32(dr["idTipoUsuario"]);
                    objUsuario.Apellidos = dr["apellidos"].ToString();
                    objUsuario.Estado = Convert.ToBoolean(dr["estado"]);
                    objUsuario.Nombre = dr["nombres"].ToString();
                    objUsuario.Email = dr["usuario"].ToString();
                }
            }
            catch (Exception ex)
            {
                objUsuario = null;
            }
            finally
            {
                cmd.Connection.Close();
                dr.Close();
            }
            return objUsuario;
        }
        public DataTable ListarClientes()
        {
            DataTable dt = new DataTable();
            SqlCommand cmd = null;
            try
            {
                cmd = new SqlCommand("SP_LISTAR_CLIENTES", clsConexion.GetConexion());
                cmd.CommandType = CommandType.StoredProcedure;
                dt.Load(cmd.ExecuteReader());
                
            }
            catch (Exception ex)
            {
                dt = null;
                cmd.Connection.Close();
            }
            finally
            {
                cmd.Connection.Close();
            }
            return dt;
        }
    }
}
